home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / DOCS / AMOSDOC.LHA / AmosV1.2Update.doc < prev    next >
Text File  |  1994-11-27  |  20KB  |  502 lines

  1.                  AMOS THE CREATOR VERSION 1.2 UPDATER
  2.  
  3.  
  4. TYPED IN BY ???. EDITED BY PARASITE.
  5.  
  6.  
  7. IMPORTANT COPYRIGHT NOTES
  8.         The AMOS Basic 1.2 Updater is copyright Manderin software, but
  9. produced as public domain. You can (and you are encouraged to) copy
  10. and distribute it freely. It does not mean AMOS Basic itself is public
  11. domain. Copyright remains on the interpreter, and on the updated
  12. version. You need AMOS Basic V1.1 to make the adaptation.
  13.  
  14.  
  15. RAMOSV1.2
  16.         This disk also contains  an  update  for  the  RAMOS  run time
  17. system. Simply use the RAMOS Install.AMOS  program  to  create a run
  18. time disk for your AMOS creations.
  19.  
  20.  
  21. HOW TO PROCEED
  22.         Updating your AMOS Basic will only take you a little time but
  23. you keep to these instructions. Hard drive users should proceed on
  24. floppydisk first, and then copy across the new AMOS files to their
  25. hard drive.
  26.  
  27.  1    Format a blank disk.
  28.  
  29.  2    Set the protection tab of your original AMOS Programs disk to
  30.       avoid accidental erasure of your master.
  31.  
  32.  3    Using Workbench's DUPLICATE option  (or a commercial copier such
  33.       as XCOPY,) create a back-up of  the  AMOS Programs disk onto the
  34.       newly formatted disk.
  35.  
  36.  4    Boot up the AMOS Update disk
  37.  
  38.  5    Double click on  the  AMOS  Update  disk  icon  and  then on the
  39.       resulting AMOS Update program icon.
  40.  
  41.  6    The updater will load and a  small window will appear. From this
  42.       point onwards, simply follow and answer the on screen prompts.
  43.  
  44.  7    When the updater has finished, place  the new version in Df0 and
  45.       press Control+Amiga+Amiga keys to boot into AMOS V1.2.
  46.  
  47.  *    Please note that the  updater  will  delete  many files from the
  48.       backed-up AMOS disk - so please don't use your original master!
  49.  
  50.  *    If everything was right, you  will  now  have  a working copy of
  51.       AMOS version 1.2 - make a  backup  as a precaution. And never go
  52.       back to V1.1.
  53.  
  54.  
  55. HARD DISK USERS
  56.         Once you have Version 1.2 on a floppy disk you simply have to
  57. copy across the following files onto your hard disk:
  58.  
  59. Directory: AMOS_System
  60.         AMOS2_1.Env   - AMOS environment file. Replaces "AMOS.Env"
  61.         Compact   - AMOS (bug free compacter) Version 1.2.
  62.         Replaces "Compact" file size should be 1816 bytes long
  63.  
  64. Directory: AMOS root directory (where you always load AMOS from)
  65.         AMOS2.1   - AMOS program file. Replaces "AMOS"
  66.         AMOS2.1.Info  - AMOS workbench icon. Replaces "AMOS.Info"
  67.  
  68. What's new in version 1.2 - by Francois Lionet
  69.         Although we have tested AMOS during many months before releasing
  70. it, we have missed a few  bugs.  Mandarin  and  I  are also VERY concerned
  71. about the user's request, and we read ALL the letters you send us.
  72.         AMOS version 1.2 is the first result of your bug reports and
  73. suggestions. We  all  hope  you  find  this  "public  domain"  way  of
  74. releasing new versions convenient (mostly for your purse!).
  75.  
  76.  
  77. Now, let's go for the list of new things! First, the bugs:
  78.  
  79.  (1) Nasty bugs!
  80.    * HELP accessory crashed on the A500.
  81.    * Accessory calling  also  invited  the  guru  with certain  screen
  82.      configurations.
  83.    * GARBAGE collection caused a crash  if  it occurred in the  middle
  84.      of a string expression,  and  if  the  collection  could not  get
  85.      enough space to finish  the  evaluation.
  86.    * GENLOCKed Amiga could not get a still picture.
  87.    * Global variables in procedure  calls  (I could not imagine people
  88.      would actually DO that!).
  89.    * CLOSE WORKBENCH used  to  crash  if  a  window  was  opened on WB
  90.      screen. Now  this  instruction  is  really  closer  to  Commodore
  91.      specifications, so the  AMOS1_2.AMOS  program  had  to change the
  92.      Startup-Sequence of the language disk.
  93.  
  94. Note that CLOSE WORKBENCH will NOT work now if you have one CLI window
  95. opened. If you want to  start  AMOS  and actually close the workbench,
  96. you must use the following CLI instructions:
  97.  
  98.         RUN >NIL: AMOS
  99.         ENDCLI
  100.  
  101.  (2) Other bugs.
  102.  
  103.  *   LDIR now works properly,
  104.  *   Y HARD now returns the right value.
  105.  *   SCIN does not report hidden screens.
  106.  *   VAL works with negative floating numbers!
  107.  *   PLOT works with  large  float  expressions.  In fact, the problem
  108.      was in the  "double  float  evaluation"  routine. All instruction
  109.      that required TWO parameters were affected.
  110.  *   INT is corrected.
  111.  *   SQR(-2) and LOG(-1..) now returns  an illegal function call error
  112.  *   Def Fn with float  numbers  does  not  report a type mismatch
  113.      error any more.
  114.  *   I SPRITE and I BOB are now tokenised.
  115.  *   AMAL PLay instruction now works fine.
  116.  *   AMPLAY too.
  117.  *   AMAL OR is now understood by AMAL.
  118.  *   ERRN reports the REAL error number (it used to add TWO to it!).
  119.  *   CONTROL+C now cuts the block under editor.
  120.  *   CONTROL+S stores the block.
  121.  *   You can now go from one label to another with ALT arrows.
  122.  *   GET  FONTS  information  used  to   be  corrupted  by  a  garbage
  123.      collection - now this is fixed.
  124.  *   MENU TO X,Y is now in the right order.
  125.  *   DOUBLE BUFFERED  ,  DUAL  PLAYFIELD  screens  were not displayed,
  126.      making it impossible to use bobs on dual playfield.
  127.  *   UNPACK works fine with portions of screens.
  128.  *   SET TAB now works in a program.
  129.  
  130.  (3) Manual bugs.
  131. Yes! A few mistakes in the manual  made  us think there were more bugs
  132. in AMOS. Here are the faulty instructions in the manual.
  133.  
  134.  *   PRG FIRST needs a filter, like DIR FIRST: =PRG FIRST$("*.*").
  135.  *   COLOUR BACK  $RGB  is  an  instruction  that  sets the background
  136.      colour of the screen, ie the colour OUTSIDE of all screens.
  137.  *   AMREG wants  the  CHANNEL  number  FIRST,  and  then the register
  138.      number, and not the contrary as stated in the manual.
  139.  
  140. Well, sorry for the bugs. Each  time  a  user  found a new one, I felt
  141. bad! Sorry for that, but you  must  realise  that AMOS source code  is
  142. over 1 Megabyte long! The most  difficult thing in such big  programs,
  143. is that when you change something at one corner, it may be  creating a
  144. bug in a very far routine that you had almost forgotten!
  145.  
  146.  
  147. New Features in AMOS 1.2
  148.  
  149.  (1)  The new improved File Selector
  150.  
  151. Certainly a subject  on  which  we  had  the  most  remarks and ideas!
  152. What's new then:
  153.  
  154.  *   You can now type stuff, and  click when the directory is loading.
  155.      As a consequence, the directory  is  not  sorted  any more, but I
  156.      have provided a SORT button. You  can  keep clicking on it if you
  157.      cannot stand seeing the directory in a mess!
  158.  *   The up and down arrows are grouped in the top of the file list.
  159.  *   The PARENT button is just over  the arrows, giving fast access to
  160.      all three buttons.
  161.  *   No more device list on the  right  of the files! To have it, just
  162.      do as in  the  ARP  file   selector:  click  on  the  right mouse
  163.      button. The device   REAL   names   (including  ASSIGNED devices)
  164.      list will be displayed.  Just  click  on  the  name to change the
  165.      disk.
  166.  *   The requester is not disabled as it was before. If you ask for an
  167.      non-existent disk, it will ask to insert it.
  168.  *   That's it. Some major  changes  that  will  (I hope) satisfy your
  169.      needs. Note  that  the  program  selector  has  changed  too.  No
  170.      kidding, how did you guess I was using the same routines?
  171.  *   The slider bar's display is now cleaner
  172.  *   Sequential files are now 3 times  faster. I was really ashamed to
  173.      be slower than Amiga Basic!
  174.  *   =DIR$  now  returns  the  disk  name,  and  not  only  the device
  175.      reference.
  176.  *   AMOS is now even  more  multi-tasking.  The editor and the direct
  177.      mode do not do "busy" loops any  more. You can normally run other
  178.      tasks on the background. Of  course,  when  a program is running,
  179.      AMOS takes as much processor  time   as  it  can to have the best
  180.      speed. See  the   new   MULTI  WAIT  instruction  below  for more
  181.      details.
  182.  
  183.  (2) New instructions
  184.  
  185. Yes, as a bonus, for no extra cost!
  186.  
  187.  *   =DEV FIRST$("filter")
  188.  *   =DEV NEXT$
  189.  
  190.         Like DIR FIRST$ and DIR NEXT$, but for the device list.
  191. Note that you should remove the spaces with -" " to get the right name.
  192.  
  193.  *      MULTI WAIT
  194.  
  195.         To make REAL  multi-task  programs,  you  must  not  grab all the
  196. processor time (as I used to  do  in  V1.1), and leave some power
  197. to the other tasks. MULTI  WAIT  does  a MULTI-TASK wait vbl. You
  198. should use it in  your  program's  main  loop,  when you wait for
  199. example for a menu item to be selected.
  200.  
  201.         Note that you should not  use  this  instruction to make accurate
  202. screen synchronisation. As  it  is  designed  to multi-task, this
  203. instruction is NOT  ACCURATE  AT  ALL!  It  may  skip  many VBLs,
  204. depending on the number of running task at the moment.
  205.  
  206.         If you missed it in the  manual, multitasking can be activated by
  207. pressing Amiga+A to flick between  AMOS  and the CLI or Workbench
  208. environments. This allows systems  with  at  least  1  meg to run
  209. AMOS and programs like DPAINT III at the same time!
  210.  
  211.  *      PRIORITY REVERSE ON
  212.  *      PRIORITY REVERSE OFF, When I had finished AMOS, someone told
  213.         me that I had made a really stupid mistake: the bob priority
  214.         display order in AMOS was REVERSED to that in STOS. Silly me!
  215.         It made it more difficult to port programs from STOS to AMOS
  216.         - but not impossible! I had to correct this!
  217.  
  218.         PRIORITY REVERSE ON, as it says, reverses the entire bob's
  219. priority table. It means  that  bob  number  1  will be first, in
  220. front of all  other  bobs,  2  will  come  in  second etc... This
  221. priority list is compatible with STOS.
  222.  
  223.         This instruction has another really nice feature when you use
  224. it with PRIORITY ON. The bobs are not  sorted from TOP to BOTTOM any
  225. more, but from BOTTOM to TOP! The  highest bob on the screen will
  226. be displayed in front of the others  - how to turn a mistake into
  227. a nice new feature!
  228.  
  229.  *      Automatic sprite flipping  -  a  very  special  feature  - really
  230.         crucial!
  231.  
  232.         In a great number of games,  the  main character needs to animate
  233. left to right, and up and  down.  Up  to now, you were obliged to
  234. keep in  the  sprite  bank  reversed  copies  of  small animation
  235. sequences for  the  main  character.  As   the   main   character
  236. usually has the best animation,  you  lose  an enormous amount of space!
  237.  
  238.         For the game RanXerox (out now!), which  I wrote a long time ago,
  239. I produced a nice flipping routine  which allowed me to keep just
  240. one copy of the main character  in  the  bank. I have grabbed and
  241. enhanced this routines for AMOS, and it  is now a part of Version 1.2.
  242.  
  243.         I had to be clever  (who  said  I  could  not?)  to find a way of
  244. including this feature and keep compatibility with older programs.
  245.  
  246.         How does it work? Let's imagine  your character is walking to the
  247. left and then back to  the  right.  You  would  only have in your
  248. bank the image of  him  walking  to  the  right.  To display this
  249. right image, you simply refer to the  image number in the bank as usual.
  250.  
  251.         To display  the  image  reversed  in  the  X  axis  (left walking
  252. image), you set bit number  15  of  the  image number to 1. Don't
  253. panic, you can simply do it with:
  254.  
  255. $8000+Image number
  256.  
  257.         So, BOB 1,160,100,1 will  display  your  character walking right,
  258. and BOB 1,160,100,$8000+1 will display  it walking left. The same
  259. principle is used for  vertical  reversing,  for this, bit number
  260. 14 is used. Add $4000  to  the  image  number. To have a vertical
  261. and horizontal reversing, use $C000.
  262.         The symmetry is a full symmetry:  I  also reverse the HOT SPOT of
  263. the bob. For example, if we had  put  the hot spot in X under the
  264. feet of our character, the  reversed  version  would also have it
  265. under its foot. So be careful if you  set the hot spot on the top
  266. left corner on a bob,  the  reversed  image  will be displayed at
  267. the top left!
  268.  
  269.         You might say that $8000  and  $C000  is  a  bit  weird to use. I
  270. have provided special functions to give a better AMOS interface:
  271.  
  272.  *   =HREV(image), add $8000 to the image
  273.  *   =VREV(image), add $4000
  274.  *   =REV(image), add $C000
  275.  
  276. Use them in place of the hex values:
  277.  
  278.         BOB 1,160,100,10
  279.         BOB 1,160,100,HREV(10)
  280.         BOB 1,160,100,VREV(10)
  281.         BOB 1,160,100,REV(10)
  282.  
  283.         To allow easy use of  the  bob  reverser  in  AMAL, I have implemented
  284. HEXADECIMAL evaluation. So you can use hex notation to refer easily to
  285. reversed bobs. If hex frightens  you,  just  add $8000, $4000 or $C000
  286. before all references in your AMAL strings.
  287.  
  288. Example:
  289.  
  290. Old AMAL string:
  291.  
  292.         "Anim 0,(1,2)(2,2)(3,2)(4,2)"
  293.  
  294. New reversed string:
  295.  
  296.         "Anim 0,($8000+1,2)($8000+2)($8000+3)($8000+4)"
  297.  
  298.  or...
  299.  
  300.         "Anim 0,($8001,2)($8002,2)($8003,2)($8004,2)"
  301.  
  302.         If you use a register to  calculate  the  image  number, do not
  303. try to modify the calculation itself, but only when you assign the register
  304.  to the image.
  305.  
  306. Old AMAL string:
  307.  
  308.         For R0=1 To 10; Let A=R0; Next R0
  309.  
  310.  New one:
  311.  
  312.         For R0=1 To 10; Let A=C000+R0; Next R0
  313.  
  314. How does the flip routine work?
  315.         It is really important for you  to understand how it works
  316. internally, so that you do not ask this system to do things it is not
  317. designed to.
  318.         I'll make myself a little bit clearer. This reversing system is
  319. designed to increase memory  before  trying  to  be  fast (although we
  320. would not mind if it  was  actually  fast,  would  we?). I had to make
  321. concessions to have it at the same time fast, easy and powerful.
  322.         The routine actually works right in the middle of the bank, and
  323. does not use any extra memory.
  324.         The bobs are flipped during the UPDATE process, just before a
  325. bob is redrawn on the screen: I look to see  if the image needs to be
  326. flipped in the bank. If it does, I do it and set a flag in the bank. On the
  327. next UPDATE, if the bob image has not changed, I will not need to flip
  328. it again, thus saving a lot of time.
  329.         If you understand the above, you will also realise one BIG
  330. limitation: It is not wise to use more than one flipped bob pointing to
  331. the same image. Let's see the next example:
  332.  
  333.         Bob 1,160,100,1
  334.         Bob 2,160,150,$8001
  335.         Bob 3,20,20,$4001
  336.         Bob 4,20,100,$C001
  337.         Update
  338.  
  339.         During the UPDATE process, AMOS will first draw bob #1. No problem,
  340. it is in the right position. Then bob #2 - AMOS needs to reverse it in X.
  341. Bob #3 needs a Y and an X reversing  (to put the bob back to normal in
  342. X!). Then bob #4 needs an X flipping.
  343.         On the next update, providing the bob's image has not changed, to
  344. display bob #1, AMOS will have to flip it in X and Y, then bob #2...
  345.         As you can see, for each UPDATE, ie every 50th of second, if the
  346. bobs move, they need to be reversed! This will work, but will take a lot
  347. of processor time, and the animation will be disastrous.
  348.         So the golden rule is: Use  the  reversed  bobs for objects alone
  349. on a screen (or be sure that normal  and  reversed images are not displayed
  350. at the same time on the screen).  If  you  want, you can have two bobs
  351. like this - experiment!
  352.  
  353.         I told you before that this system was for use with BOBS. Yes,
  354. it is totally automatic with bobs. But as it directly affects the sprite
  355. bank, you can use it with sprites.
  356.         When a hardware computed  sprite is calculated, AMOS looks into the
  357. sprite bank and gets the image  from  it.  If the image is reversed at
  358. that moment, the hardware sprite  will  display  a reversed image. You
  359. can therefore have reversed  hardware  sprites  using this method. But
  360. you cannot do for example:
  361.  
  362.         Sprite 1,200,200,$8001
  363.  
  364.  * Pasting flipped bobs
  365.  
  366. PASTE BOB also accepts reversed images.  A  simple trick to reverse an
  367. image in the bank without  having  to  display  a  bob is to PASTE the
  368. reversed image outside of the screen. Example:
  369.  
  370.         Paste Bob 500,500,$C000
  371.  
  372. This will reverse image 4 in  the  bank, without any output (and quite
  373. fast).
  374.  
  375. * Collision Detection
  376.  
  377. This is an important point, and you  have  to be very careful when you
  378. detect collisions with reversed bobs!
  379.  
  380. The collision detection uses the shapes in the bank at the very moment
  381. it is called. Let's see an example that will never work:
  382.  
  383.         Bob 1,160,100,1
  384.         Do
  385.           Bob 2,XScreen(XMouse),YScreen(YMouse),$8001
  386.           Wait Vbl
  387.           Exit if Bob Col(1)
  388.         Loop
  389.  
  390.         Why doesn't it work? We have two reversed images of the same
  391. definition in the bank. After the  updating  process, the image in the
  392. bank is left reversed. So the Bob  Col instruction will take bob shape
  393. 1, the reversed image, and this will not work!
  394.  
  395.         So remember what uncle Francois tells you:
  396. THOU SHALL NEVER USE COLLISION  DETECTION  WITH MORE THAN ONE REVERSED
  397. IMAGE ON THE SCREEN!
  398.  
  399. How is it coded into the sprite bank?
  400.  
  401. I use two bits in the Hot spot  X definition of each image in the bank
  402. (at SPRITE BASE+6).
  403.  
  404.         Bit #15 for X: 0 if normal, 1 if reversed
  405.         Bit #14 for Y:" " " "
  406.  
  407.         Before RUN and SAVE, the bank is restored to its normal state,
  408. so that it is still compatible with version 1.1...
  409.  
  410. * Block Flipping
  411.  
  412. Yes, I had a really nice routine, I  had to use it for the blocks! Two
  413. new instructions:
  414.  
  415.  HREV BLOCK number, flips horizontally
  416.  VREV BLOCK number, flips vertically
  417.  
  418. * Bank Swapping
  419.  
  420. A new and very needed instruction:
  421.  
  422.    Bank Swap number1,number2
  423.  
  424. This instruction will swap the  pointers  of  the two banks. Useful if
  425. you want to turn an icon bank into a sprite bank. Example:
  426.  
  427.    Bank Swap 1,2
  428.  
  429. or have more than one music bank at the same time, for example:
  430.  
  431.    Bank Swap 3,5
  432.  
  433.  etc...
  434.  
  435. (3) New Programs
  436.  
  437. The AMOS1_2.AMOS updater has also saved  a  few new programs onto your
  438. disk:
  439.  
  440.  *   CONFIG1_2.AMOS - the  new  configuration  program.  Note that the
  441.                 configuration file in the AMOS_System  directory  is not the same
  442.                 as the version 1_1 file.
  443.  
  444.  *   MENU_EDITOR.AMOS - a new one,  as  AMOS had some annoying bugs in
  445.                 fonts handling and ERRN functions.
  446.  
  447.  *   LOCK.AMOS program! Yes, now you can lock your procedures, as said
  448.                 in the manual. To proceed:
  449.  
  450.    1)   Make a backup of your program, with OPENED procedures
  451.    2)   Close all the procedures you wish to definitely lock
  452.    3)   Load the LOCK.AMOS program, as an ACCESSORY
  453.    4)   Run LOCK.AMOS using the RUN OTHER Menu option from the editor
  454.  
  455. Your procedures are now locked, and you cannot open them back.
  456.  
  457. NB: Do not try to load a  program with locked procedures in AMOS1_1 as
  458. it will crash  the  computer!  Version  1_1  is  designed to disappear
  459. quickly!
  460.  
  461. I am offering a bottle of (GOOD) French champagne to the first one who
  462. will send me a  program  that  unlocks  another  AMOS program, and the
  463. LOCK.AMOS program unlocked. I wish you some happy hours trying to find
  464. out how I did it! Hahaha!
  465.  
  466. AMOS USERS CLUB
  467. Issue 1 of the AMOS Newsletter  is  now available. The club has really
  468. taken off with over 700 members having  joined - this is more than the
  469. STOS club did in a year! Adding  a  high  score to Magic Forest, How I
  470. wrote Cartoon Capers, Public Domain Update,  A500 Blues and an article
  471. on Sprites, form the  main body of  this  first issue.  Join now - you
  472. won't regret it and  you'll  get  all  the  latest AMOS  related news.
  473.  
  474. SOUNDTRACKER FIX
  475. If you've experienced problems with the Soundtracker to AMOS converter
  476. (found on the EXTRAS  disk),  then  have  a  look  at the listing  and
  477. ensure that line 61 is the same as below:
  478.  
  479.         OF_MUSIC=$43C
  480.  
  481. Without this change the music tended to play out of sequence on one of
  482. the channels.
  483.  
  484. AMOS'S FUTURE
  485. A look to the future! In the next few months, I will program:
  486.  
  487.  *   A COMMS  extension,  to  handle  all  RS232  and parallel   ports
  488.                 directly
  489.  
  490.  *   An AREXX interface
  491.  
  492.  *   The COMPILER!!! it is  still  time  to  send to Mandarin all your
  493.                 ideas and suggestions for  this  important  product. We will read
  494.                 all the letters, as usual.
  495.  
  496. I look forward to seeing what you  have  done in AMOS. Think about the
  497. PD library, and do not keep  your masterpieces for yourself only! Send
  498. them to the club. I have already seen some amazing stuff...
  499.  
  500. That's all folks! I wish you as much  fun programming in AMOS as I had
  501. programming it!
  502.